<?php
/**
 * контролер по умолчанию модуля User
 * @author nrnwest@gmail.com
 *
 */
class User_IndexController extends Arm_Controller_Action
{
    
	/**
	* Вход в систему пользователей
	*/
    public function indexAction()
    {
        
        if(Arm_User::getInstance()->isLogin()) {
            $this->_redirect('/user/index/account/');
        }
        $form = new User_Form_Login();
        $this->view->form = $form;
        $form->addErrorMessage('Ошибка при заполнении формы');
            if($this->getRequest()->isPost()) {
                if($form->isValid($this->getPost())) {
                    $data = $form->getValues();
                    if(!Arm_User::getInstance()->login($data['login'], $data['password'], $data['record'])) {
                        $this->addFlashMessender(Arm_Translate::_('Неверный логин или пароль'), true);
                        $this->_redirect('/user/index/');
                        return;
                    }
                    // если група админ перебрасываем пользователя в админ акаунт.
                    if(Arm_User::getInstance()->getGroup() === Arm_Acl::GROUP_ADMIN) {
                        $this->_redirect('/admin/');
                    }
                    $this->_redirect('/user/index/account/');
                }
             }
     }

	/**
 	* Страница пользователя.
 	* 
 	*/
    public function accountAction()
    {
        $this->view->login = Arm_User::getInstance()->getData()->login;
    }

	/**
 	* Выход с системы.
 	*/
    public function unloginAction()
    {
        Arm_User::getInstance()->unLogin();
        $this->_redirect('/user/');
    }

	/**
 	* Регистрация пользователей
 	*/
    public function registerAction ()
    {
        $model = new User_Model_User();
        $form = new User_Form_Register();
        $this->view->form = $form;
        if($this->getRequest()->isPost() and $form->isValid($this->getPost())) {
           // обработка данных
            $data = $form->getValues();
            $model->register($data);
            $this->render('validregister');
        }
    }
	/**
 	* подвержения регистрации
 	*/
    public function confirmAction ()
    {
        $model = new User_Model_User();
        $model->delStaleData();
        $k = $this->_getParam('k');
        $valid = new User_Validate_Key();
        if ($valid->isValid($k) === false) {
            $messages = $valid->getMessages();
            $km = key($messages);
            throw new Zend_Controller_Action_Exception($messages[$km], 403);
        }
        $idUser = $model->confirm($k);
        $this->view->res = true;
    }
	/**
 	* напомнить пароль
 	*/
    public function remindAction ()
    {
        $form = new User_Form_Remind();
        $this->view->form = $form;
            if($this->getRequest()->isPost() and $form->isValid($this->getPost())) {
                $data = $form->getValues();
                $model = new User_Model_User();
                $model->remidPassword($data['loginoremail']);
                $this->render('remidok');
                return;
            }
    }

	/**
 	* Создания нового паспорта
 	*/
    public function npAction()
    {
        // проверяем ликвидный ли ключ
      $k = $this->_getParam('k');
      $model =  new User_Model_User();
          if($model->isKeyRemidPassword($k) === false) {
              $this->addFlasMessender(Arm_Translate::_('Ошибка в ссылке для напоминания пароля, пожалуйста повторите вашу попытку'), true);
              $this->_redirect('/user/index/remind/');
          }
          // выводим форму для измениния пароля.
          // выполняем проверку
       $form = new User_Form_PasswordNew();
       $this->view->form = $form;
          if($this->getRequest()->isPost() and $form->isValid($this->getPost())) {
          // записываем новый паспорт
              $data = $form->getValues();
              $model->writeNewPassport($data['password'], $k);
              $this->render('oknp');
              return;
          }
   
    }

}